package com.guaoran.interview.in2018.collection.map;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @Author gucheng
 * @Description
 * ConcurrentHashMap
 * 2019-03-25 18:52
 */
public class ConcurrentHashMapDemo {
    public static void main(String[] args) {
        Map<String,Integer> map = new ConcurrentHashMap<>();
        for (int i = 0; i < 100; i++) {
            map.put(i+"key"+i,i);
        }
    }

    /**
     * ConcurrentHashMap 的节点与HashMap 的节点大致是相同的，都是继承了Map.Entry
     * 不同之处在于在ConcurrentHashMap.Node 节点的val 和 next 属性被 volatile 进行修饰。
     * 并大量使用了 Unsafe类  和 CAS 的安全替换
     *
     * static class Node<K,V> implements Map.Entry<K,V> {
     *         final int hash;
     *         final K key;
     *         volatile V val;
     *         volatile Node<K,V> next;
     * }
     *
     */
}
